벡터 공간
지금까지 우리는 선형 연립방정식 시스템과 그것을 푸는 방법(2.3절)을 살펴보았다. 우리는 선형 연립방정식 시스템이 행렬-벡터 표기법(2.10)을 사용하여 간결하게 표현될 수 있음을 보았다. 다음 내용에서, 우리는 벡터 공간(vector spaces), 즉 벡터들이 살고 있는 구조화된 공간을 자세히 들여다볼 것이다.
$\quad$ 이 챕터의 초반부에서, 우리는 벡터를 ‘더할 수 있고 스칼라(상수)를 곱할 수 있으며, 연산 후에도 여전히 같은 타입의 객체로 남아있는 것들’이라고 비공식적으로 특징지었다. 이제 우리는 이것을 공식화(formalize)할 준비가 되었다. 우리는 군(Group)이라는 개념을 도입하는 것으로 시작할 것인데, 군은 어떤 집합의 구조를 온전하게 유지하는 연산이 정의된 요소들의 집합을 말한다.
2.4.1 군
군은 컴퓨터 과학에서 중요한 역할을 한다. 집합 위의 연산을 위한 근본적인 프레임워크를 제공할 뿐만 아니라, 암호학(cryptography), 코딩 이론(coding theory), 그리고 그래픽스(graphics)에서 아주 많이 사용된다.
정의 2.7 (군, Group).
집합 $\mathcal{G}$ 와 그 집합 위에서 정의된 연산 $\otimes : \mathcal{G} \times \mathcal{G} \rightarrow \mathcal{G}$ 를 고려하자. 만약 다음 조건들이 성립하면 $G := (\mathcal{G}, \otimes)$ 를 군(group)이라고 부른다:
-
$\otimes$ 에 대해 $\mathcal{G}$ 가 닫혀 있음 (Closure): $\forall x, y \in \mathcal{G}$ 에 대하여, $x \otimes y \in \mathcal{G}$ 이다.
-
결합 법칙 (Associativity): $\forall x, y, z \in \mathcal{G}$ 에 대하여, $(x \otimes y) \otimes z = x \otimes (y \otimes z)$ 이다.
-
항등원 (Neutral element): $\forall x \in \mathcal{G}$ 에 대하여 $x \otimes e = x$ 그리고 $e \otimes x = x$ 를 만족하는 $e \in \mathcal{G}$ 가 존재한다.( $\exists e \in \mathcal{G} \forall x \in \mathcal{G} : \text{ s.t. } x \otimes e = e \otimes x = x$ )
-
역원 (Inverse element): $\forall x \in \mathcal{G}$ 에 대하여 $x \otimes y = e$ 그리고 $y \otimes x = e$ 를 만족하는 $y \in \mathcal{G}$ 가 존재한다. 여기서 $e$ 는 항등원이다. 우리는 종종 $x$ 의 역원을 $x^{-1}$ 로 표기한다.( $\forall x \in \mathcal{G}, \exists y \in \mathcal{G} : \text{ s.t. } x \otimes y = x^{-1} \otimes x = e$ )
$\to$ 기호 $\exists$ 는 “~가 (적어도 하나) 존재한다”는 뜻이다.
참고. 역원은 연산 $\otimes$ 에 따라 정의되는 것이지, 반드시 $\frac{1}{x}$ 을 의미하는 것은 아니다.
만약 추가적으로 모든 $x, y \in \mathcal{G}$ 에 대하여 $x \otimes y = y \otimes x$ (교환법칙)가 성립하면, $G = (\mathcal{G}, \otimes)$ 를 아벨 군(Abelian group) 또는 가환 군(commutative)이라고 부른다.
$\to$ $\otimes$ 기호는 덧셈, 곱셈, 행렬 곱 등 모든 연산을 대변한다.
예제 2.10 (군, Groups)
연산이 정의된 몇 가지 집합의 예시를 살펴보고, 그것들이 군(group)인지 확인해 보자.
-
$(\mathbb{Z}, +)$ 는 아벨 군(Abelian group)이다.
-
$(\mathbb{N}_0, +)$ 는 군이 아니다: 비록 $(\mathbb{N}_0, +)$ 가 항등원(0)은 가지고 있지만, 역원(음수)이 빠져 있기 때문이다.
-
$(\mathbb{Z}, \cdot)$ 는 군이 아니다: 비록 $(\mathbb{Z}, \cdot)$ 가 항등원(1)은 포함하고 있지만, $z \neq \pm 1$ 인 임의의 $z \in \mathbb{Z}$ 에 대한 역원( $1/z$ )이 빠져 있기 때문이다.
-
$(\mathbb{R}, \cdot)$ 는 군이 아니다: 0이 역원을 가지지 않기 때문이다.
-
$(\mathbb{R} \setminus {0}, \cdot)$ 는 아벨 군이다.
-
$(\mathbb{R}^n, +), (\mathbb{Z}^n, +), n \in \mathbb{N}$ 은 덧셈이 다음과 같이 성분별(componentwise)로 정의된다면 아벨 군이다.
그러면, $(x\_1, \dots, x\_n)^{-1} := (-x\_1, \dots, -x\_n)$ 이 역원이 되고, $e = (0, \dots, 0)$ 이 항등원이 된다.
-
$(\mathbb{R}^{m \times n}, +)$ , 즉 $m \times n$ 행렬들의 집합은 ((2.61)과 같이 성분별 덧셈이 정의될 때) 아벨 군이다.
-
$(\mathbb{R}^{n \times n}, \cdot)$ , 즉 행렬 곱셈이 정의된 $n \times n$ 행렬들의 집합을 자세히 살펴보자 (식 2.13 참조).
-
닫힘 성질과 결합 법칙은 행렬 곱셈의 정의로부터 바로 따라온다.
-
항등원: 단위 행렬 $\boldsymbol{I}_n$ 이 $(\mathbb{R}^{n \times n}, \cdot)$ 에서의 행렬 곱셈 “.”에 대한 항등원이다.
-
역원: 만약 역행렬이 존재한다면( $\boldsymbol{A}$ 가 정칙 행렬이라면), $\boldsymbol{A}^{-1}$ 가 $\boldsymbol{A} \in \mathbb{R}^{n \times n}$ 의 역원이다. 정확히 이 경우에만(즉, 역행렬이 존재하는 행렬들만 모았을 때만) $(\mathbb{R}^{n \times n}, \cdot)$ 은 군이 되며, 이를 일반 선형 군(general linear group)이라고 부른다.
-
정의 2.8 (일반 선형 군, General Linear Group). 정칙(가역, invertible) 행렬 $A \in \mathbb{R}^{n \times n}$ 들의 집합은 식 (2.13)에 정의된 행렬 곱셈에 대하여 군(group)을 이루며, 이를 일반 선형 군(general linear group) $GL(n, \mathbb{R})$ 이라고 부른다. 하지만, 행렬 곱셈은 교환 법칙이 성립하지 않으므로(non-commutative), 이 군은 아벨 군이 아니다.
2.4.2 벡터 공간 (Vector Spaces)
우리가 군(groups)을 논의할 때, 우리는 집합 $\mathcal{G}$ 와 그 집합 내부의 연산(inner operations), 즉 오직 $\mathcal{G}$ 의 원소들끼리만 작용하는 매핑 $\mathcal{G} \times \mathcal{G} \rightarrow \mathcal{G}$ 을 살펴보았다. 다음 내용에서, 우리는 내부 연산( $+$ )에 더하여 외부 연산(outer operation) $\cdot$ , 즉 벡터 $x \in \mathcal{G}$ 에 스칼라 $\lambda \in \mathbb{R}$ 를 곱하는 연산까지 포함하는 집합을 고려할 것이다. 우리는 내부 연산을 덧셈(addition)의 형태로, 외부 연산을 스케일링(scaling)의 형태로 생각할 수 있다. 여기서 내부/외부 연산은 나중에 배울 내적(inner product)/외적(outer product)과는 전혀 관계가 없다는 점에 주의하라.
정의 2.9 (벡터 공간, Vector Space).
실수 벡터 공간 $V = (\mathcal{V}, +, \cdot)$ 은 두 가지 연산이 정의된 집합 $\mathcal{V}$ 이다:
여기서 다음 조건들이 성립해야 한다:
- $(\mathcal{V}, +)$ 는 아벨 군(Abelian group)이다: (즉, 덧셈에 대해 닫혀 있고, 교환/결합 법칙이 성립하며, 영벡터와 역벡터가 존재한다.)
- 분배 법칙 (Distributivity):
- 모든 $\lambda \in \mathbb{R}, \boldsymbol{x}, \boldsymbol{y} \in \mathcal{V}$ 에 대하여: $\lambda \cdot (\boldsymbol{x} + \boldsymbol{y}) = \lambda \cdot \boldsymbol{x} + \lambda \cdot \boldsymbol{y}$
- 모든 $\lambda, \psi \in \mathbb{R}, \boldsymbol{x} \in \mathcal{V}$ 에 대하여: $(\lambda + \psi) \cdot \boldsymbol{x} = \lambda \cdot \boldsymbol{x} + \psi \cdot \boldsymbol{x}$
- 결합 법칙 (외부 연산, Associativity):
모든 $\lambda, \psi \in \mathbb{R}, \boldsymbol{x} \in \mathcal{V}$ 에 대하여: $\lambda \cdot (\psi \cdot \boldsymbol{x}) = (\lambda\psi) \cdot \boldsymbol{x}$ - 외부 연산에 대한 항등원 (Neutral element):
모든 $\boldsymbol{x} \in \mathcal{V}$ 에 대하여: $1 \cdot \boldsymbol{x} = \boldsymbol{x}$
요소 $\boldsymbol{x} \in V$ 는 벡터(vector)라고 불린다. $(\mathcal{V}, +)$ 의 항등원은 영벡터(zero vector) $\mathbf{0} = [0, \dots, 0]^\top$ 이고, 내부 연산 $+$ 는 벡터 덧셈이라고 불린다. 요소 $\lambda \in \mathbb{R}$ 은 스칼라(scalar)라고 불리며, 외부 연산 $\cdot$ 은 스칼라에 의한 곱셈이다(스칼라배). 스칼라 곱(scalar product, inner product, 내적)은 이것과는 다른 것이며, 3.2절에서 다룰 것이라는 점에 주의하라.
참고. ‘벡터 곱셈’ $ab$ ( $a, b \in \mathbb{R}^n$ )라는 것은 정의되지 않는다. 이론적으로는 $c_j = a_j b_j$ 가 되는 $c = ab$ 와 같은 원소별 곱셈(element-wise multiplication)을 정의할 수도 있다. 이러한 ‘배열 곱셈(array multiplication)’은 많은 프로그래밍 언어(역주: 파이썬의 numpy 등)에서 흔하게 사용되지만, 표준적인 행렬 곱셈 규칙을 사용할 경우 수학적으로는 의미가 제한적이다. 벡터를 $n \times 1$ 행렬로 취급할 때(우리는 보통 그렇게 한다), 우리는 식 (2.13)에 정의된 행렬 곱셈 규칙을 사용하게 된다. 하지만 이 경우 벡터들의 차원(dimensions)이 맞지 않아 곱셈을 할 수 없다.
$\to$ 우리는 흔히 벡터를 $\begin{bmatrix} 1 \ 2 \end{bmatrix}$ 같은 숫자의 배열이나 화살표로만 생각하는데, 위 공리만 만족하는 모든 대상을 벡터로 취급한다. 3.7절에서도 다항식이나 사인/코사인 같은 함수, 행렬도 위의 공리들을 만족하므로 벡터로 볼 수 있다. 즉, 이들에 대해 내적, 직교 투영, 고유값 분해와 같은 연산이 가능해진 것이다.
예제 2.11 (벡터 공간, Vector Spaces)
몇 가지 중요한 예시들을 살펴보자:
-
$\mathcal{V} = \mathbb{R}^n, n \in \mathbb{N}$ 은 다음과 같이 연산이 정의된 벡터 공간이다:
-
덧셈: 모든 $\boldsymbol{x}, \boldsymbol{y} \in \mathbb{R}^n$ 에 대하여 $\boldsymbol{x} + \boldsymbol{y} = (x_1, \dots, x_n) + (y_1, \dots, y_n) = (x_1 + y_1, \dots, x_n + y_n)$
-
스칼라에 의한 곱셈: 모든 $\lambda \in \mathbb{R}, \boldsymbol{x} \in \mathbb{R}^n$ 에 대하여 $\lambda \boldsymbol{x} = \lambda(x_1, \dots, x_n) = (\lambda x_1, \dots, \lambda x_n)$
-
-
$\mathcal{V} = \mathbb{R}^{m \times n}, m, n \in \mathbb{N}$ 은 벡터 공간이다:
-
덧셈: $\boldsymbol{A} + \boldsymbol{B} = \begin{bmatrix} a_{11} + b_{11} & \dots & a_{1n} + b_{1n} \ \vdots & & \vdots \ a_{m1} + b_{m1} & \dots & a_{mn} + b_{mn} \end{bmatrix}$ 은 모든 $\boldsymbol{A}, \boldsymbol{B} \in \mathcal{V}$ 에 대하여 원소별(elementwise)로 정의된다.
-
스칼라에 의한 곱셈: $\lambda \boldsymbol{A} = \begin{bmatrix} \lambda a_{11} & \dots & \lambda a_{1n} \ \vdots & & \vdots \ \lambda a_{m1} & \dots & \lambda a_{mn} \end{bmatrix}$ 은 2.2절에서 정의된 바와 같다.
-
$\mathbb{R}^{m \times n}$ 은 $\mathbb{R}^{mn}$ 과 동등하다(equivalent)는 것을 기억하라.
-
-
$\mathcal{V} = \mathbb{C}$ (복소수 집합)는 복소수의 표준적인 덧셈 정의와 함께 벡터 공간이 된다.
$\to$ 행렬도 벡터와 같은 덧셈과 스칼라배가 성립하므로 벡터로 볼 수 있다.
참고 (Remark). 앞으로 우리는 표준적인 벡터 덧셈( $+$ )과 스칼라 곱셈( $\cdot$ )이 사용될 때, 벡터 공간 $(\mathcal{V}, +, \cdot)$ 을 간단히 $V$ 로 표기할 것이다. 또한, 표기를 단순화하기 위해 벡터 공간 $\mathcal{V}$ 에 속한 벡터를 $x \in V$ 로 표기할 것이다.
참고 (Remark). 벡터 공간 $\mathbb{R}^n, \mathbb{R}^{n \times 1}, \mathbb{R}^{1 \times n}$ 은 우리가 벡터를 쓰는 방식에서만 차이가 있다. 앞으로 우리는 $\mathbb{R}^n$ 과 $\mathbb{R}^{n \times 1}$ 을 구별하지 않을 것이며, 이를 통해 $n$ -튜플(tuple)을 다음과 같은 열 벡터(column vectors)로 쓸 수 있게 한다:
이것은 벡터 공간 연산에 관한 표기를 단순화해 준다. 하지만, 우리는 행렬 곱셈과의 혼동을 피하기 위해 $\mathbb{R}^{n \times 1}$ (열 벡터)과 $\mathbb{R}^{1 \times n}$ (행 벡터, row vectors)은 구별(distinguish)한다. 기본적으로(by default), 우리는 $\boldsymbol{x}$ 를 열 벡터를 나타내는 데 사용하고, 행 벡터는 $\boldsymbol{x}$ 의 전치인 $\boldsymbol{x}^\top$ 로 표기한다.
2.4.3 벡터 부분 공간
다음 내용에서, 우리는 벡터 부분 공간(vector subspaces)을 소개할 것이다. 직관적으로 말하면, 이들은 원래의 벡터 공간 안에 포함된 집합으로서, 이 부분 공간 내부의 원소들에 대해 벡터 공간 연산을 수행하더라도 결코 그 공간을 벗어나지 않는다는 성질을 가지고 있다. 이런 의미에서, 그들은 “닫혀 있다(closed)”. 벡터 부분 공간은 머신러닝의 핵심 아이디어다. 예를 들어, 10장에서는 차원 축소(dimensionality reduction)를 위해 벡터 부분 공간을 어떻게 사용하는지 보여준다.
정의 2.10 (벡터 부분 공간, Vector Subspace).
$V = (\mathcal{V}, +, \cdot)$ 를 벡터 공간이라고 하고 $U \subseteq \mathcal{V}, U \neq \emptyset$ (공집합이 아닌 부분 집합)이라고 하자. 만약 $U$ 가 $U \times U$ 와 $\mathbb{R} \times U$ 로 제한된 벡터 공간 연산 $+$ 와 $\cdot$ 에 대하여 그 자체로 벡터 공간이 된다면, $U = (\mathcal{U}, +, \cdot)$ 를 $V$ 의 벡터 부분 공간(vector subspace) (또는 선형 부분 공간, linear subspace)이라고 부른다. 우리는 $U$ 가 $V$ 의 부분 공간임을 $U \subseteq V$ 로 표기한다.
$\to$ 원래 공간 $V$ 가 이미 벡터 공간의 공리들을 만족하며, $U$ 는 그런 $V$ 안에 있으니 모든 공리를 따져볼 필요 없이 영벡터(원점), 덧셈과 스칼라배의 닫힘만 확인하면 된다.
$\quad$ 만약 $U \subseteq V$ 이고 $V$ 가 벡터 공간이라면, $U$ 는 자연스럽게 $V$ 로부터 많은 성질들을 직접 물려받는다(inherits). 왜냐하면 그 성질들은 모든 $\boldsymbol{x} \in V$ 에 대해 성립하므로, 당연히 모든 $\boldsymbol{x} \in U \subseteq V$ 에 대해서도 성립하기 때문이다. 여기에는 아벨 군의 성질들, 분배 법칙, 결합 법칙, 항등원이 포함된다. 따라서 $(\mathcal{U}, +, \cdot)$ 가 $V$ 의 부분 공간인지 결정하기 위해서 우리는 다음 사항들만 보여주면 된다:
- ** $U \neq \emptyset$ , 특히: $\mathbf{0} \in U$ ** (영벡터가 포함되어야 함)
- $U$ 의 폐쇄성(Closure):
a. 외부 연산(스칼라배)에 대하여: 모든 $\lambda \in \mathbb{R}$ 과 모든 $\boldsymbol{x} \in U$ 에 대하여: $\lambda \boldsymbol{x} \in U$ .
b. 내부 연산(덧셈)에 대하여: 모든 $\boldsymbol{x}, \boldsymbol{y} \in U$ 에 대하여: $\boldsymbol{x} + \boldsymbol{y} \in U$ .
예제 2.12 (벡터 부분 공간의 예시들)
몇 가지 예시를 살펴보자:
-
모든 벡터 공간 $V$ 에 대하여, 자기 자신 $V$ 와 영공간 ${\mathbf{0}}$ 은 자명한(trivial) 부분 공간이다.
-
그림 2.6에서 오직 예시 D만이 $\mathbb{R}^2$ 의 부분 공간이다 (통상적인 내/외부 연산에 대해).

- A와 C: 폐쇄성(closure) 성질이 위배된다.
- B: 영벡터( $\mathbf{0}$ )를 포함하지 않는다.
-
$n$ 개의 미지수를 가진 동차 선형 연립방정식 $\boldsymbol{Ax} = \mathbf{0}$ 의 해집합은 $\mathbb{R}^n$ 의 부분 공간이다. (이것이 바로 앞서 배운 영공간/커널입니다.)
-
비동차 선형 연립방정식 $\boldsymbol{Ax} = \boldsymbol{b}$ ( $\boldsymbol{b} \neq \mathbf{0}$ )의 해집합은 $\mathbb{R}^n$ 의 부분 공간이 아니다.
-
임의의 개수의 부분 공간들의 교집합(intersection)은 그 자체로 부분 공간이다.
참고 (Remark). 모든 부분 공간 $U \subseteq (\mathbb{R}^n, +, \cdot)$ 은 어떤 동차 선형 연립방정식 $\boldsymbol{Ax} = \mathbf{0}$ ( $x \in \mathbb{R}^n$ )의 해 공간(solution space)이다.